For corporations having a large amount of storage needs for their data and files, the data and files are increasingly being stored in cloud storages these days. When sending the data to the cloud storage over a network (through network sockets), efficient packing or encoding of the data (e.g., binary packing of the data) is desired in order to reduce burden on the communication bandwidth between the local host of the clients and the cloud storage. In the meantime, simple non-binary encoding of at least a portion of the data is also important for preserving backwards compatibility with the clients of the data/files.
JavaScript Object Notation (JSON) is an open-standard language-independent data format that uses non-binary human-readable text to transmit data objects (payload) comprising logical data in the form of attribute-value pairs over a network. JSON is commonly used for asynchronous communication between a local client and a server. Binary JSON (BJSON) is another format with extensions to allow both binary and string data to be serialized and encoded in the payload. Since BJSON drastically changes the format of the payload to include additional data types that are not part of the JSON format, it cannot be used by client devices/hosts that support JSON only. It is thus desirable to have a data packing approach that supports both efficient and non-binary encoding of data for data transmission between the clients and the cloud storage or server without imposing any special restrictions or requirements on the software and/or the data formats supported by the clients.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings.